isf 0.1.0

Parsing, Deserialization and Serialization of the Interactive Shader Format.
Documentation
/*{
	"DESCRIPTION": "",
	"CREDIT": "VIDVOX",
	"ISFVSN": "2",
	"CATEGORIES": [
		"Utility"
	],
	"INPUTS": [
		{
			"NAME": "colorShift",
			"LABEL": "Color Shift",
			"TYPE": "float",
			"DEFAULT": 0.0,
			"MIN": 0.0,
			"MAX": 1.0
		}
	]
	
}*/




vec4 colorsArray[9];




void main()	{	
	vec4		outputPixelColor = vec4(0.0);
	vec2		loc = isf_FragNormCoord.xy;
	
	//	figure out if we are in the top, middle or bottom sections
	//	these are broken into the ratios 3/4, 1/8, 1/8
	
	//	if we are in the top section figure out which of the 9 colors to use
	if (loc.y > 0.25)	{
		colorsArray[0] = vec4(0.412, 0.412, 0.412, 1.0);
		colorsArray[1] = vec4(0.757, 0.757, 0.757, 1.0);
		colorsArray[2] = vec4(0.757, 0.757, 0.000, 1.0);
		colorsArray[3] = vec4(0.000, 0.757, 0.757, 1.0);
		colorsArray[4] = vec4(0.000, 0.757, 0.000, 1.0);
		colorsArray[5] = vec4(0.757, 0.000, 0.757, 1.0);
		colorsArray[6] = vec4(0.757, 0.000, 0.000, 1.0);
		colorsArray[7] = vec4(0.000, 0.000, 0.757, 1.0);
		colorsArray[8] = vec4(0.412, 0.412, 0.412, 1.0);
		
		int		colorIndex = int((9.0 * mod(loc.x + colorShift, 1.0)));
		
		outputPixelColor = colorsArray[colorIndex];
	}
	//	in the 'middle section we draw the black to white image
	else if (loc.y > 0.125)	{
		outputPixelColor.rgb = vec3(loc.x);
		outputPixelColor.a = 1.0;
	}
	else	{
		colorsArray[0] = vec4(0.169, 0.169, 0.169, 1.0);
		colorsArray[1] = vec4(0.019, 0.019, 0.019, 1.0);
		colorsArray[2] = vec4(1.000, 1.000, 1.000, 1.0);
		colorsArray[3] = vec4(1.000, 1.000, 1.000, 1.0);
		colorsArray[4] = vec4(0.019, 0.019, 0.019, 1.0);
		colorsArray[5] = vec4(0.000, 0.000, 0.000, 1.0);
		colorsArray[6] = vec4(0.019, 0.019, 0.019, 1.0);
		colorsArray[7] = vec4(0.038, 0.038, 0.038, 1.0);
		colorsArray[8] = vec4(0.169, 0.169, 0.169, 1.0);
		
		int		colorIndex = int((9.0 * loc.x));
		
		outputPixelColor = colorsArray[colorIndex];		
	}
	
	gl_FragColor = outputPixelColor;
}